using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Criterion;
using Didsoft.DataAccess.Hibernate;
using Didsoft.DataAccess.Contracts;
using SIOGDE.AccesoDatos.Entidades;
using SIOGDE.AccesoDatos.Contratos;

namespace SIOGDE.AccesoDatos.Contexto
{
   public class EspecialidadAccesoDatos : DataAccessBasic<Especialidad>, IEspecialidadAccesoDatos
   {
     public EspecialidadAccesoDatos()
     {
     }
     
     /// <summary>
     /// Devuelve una lista IList<Especialidad> con todas las ocurrencias encontradas, en base a filtro.
     /// </summary>
     /// <param name="filtro"></param>
     /// <returns></returns>
     public IList<Especialidad> BuscarPorFiltro(string filtro)
     {
             ICriteria criteria = Session.CreateCriteria(typeof(Especialidad));
             criteria.Add(Expression.Like("Nombre", filtro+"%")); 
             return criteria.List<Especialidad>();
     }


     public IList<Especialidad> GetPorPersonaId(int PersonaIdSession)
     {
         var query = (from q in Session.QueryOver<HistorialEspecialidad>()
                      where q.Persona.Id == PersonaIdSession
                      select q.Especialidad);
         return query.List<Especialidad>();
     }

   }
}

